let objData = {
    '初始化仓库': [
        {
            key: '初始化仓库',
            value: 'git init'
        },
        {
            key: '初始化裸仓库',
            value: 'git init --bare'
        },
        {
            key: '初始化仓库',
            value: 'git clone <git-repo>'
        },
    ],
    '配置': [
        {
            key: '查看本地配置的邮箱',
            value: 'git config user.email'
        },
        {
            key: '查看本地配置的用户名',
            value: 'git config user.name'
        },
        {
            key: '编辑配置文件',
            value: 'git config [--global] -e'
        },
        {
            key: '列出配置信息',
            value: 'git config -l'
        },
        {
            key: '获取相应的配置',
            value: 'git config --get core.editor'
        },
        {
            key: '配置用户邮箱',
            value: 'git config --global user.email <mail>'
        },
        {
            key: '配置用户名',
            value: 'git config --global user.name <name>'
        },
        {
            key: '输出彩色信息',
            value: 'git config color.ui true'
        },
        {
            key: '设置文件名大小写敏感',
            value: 'git config core.ignoreCase false'
        },
        {
            key: '设置推送策略为 simple',
            value: 'git config push.default simple'
        },
        {
            key: '设置 git 的编辑器是 vim',
            value: 'git config --global core.editor vim'
        },
        {
            key: '设置命令别名',
            value: 'git config --global alias.co checkout'
        },
    ],
    '忽略文件': [
        {
            key: '添加本项目的忽略文件',
            value: 'vim .gitignore'
        },
        {
            key: '添加本项目的忽略文件并不把此文件纳入版本管理',
            value: 'vim .git/info/exclude'
        },
        {
            key: '设置全局忽略文件',
            value: 'git config --global core.excludesfile ~/.gitignore'
        },
        {
            key: '对已加入版本管理的文件不做更改检查',
            value: 'git update-index --assume-unchanged <file>'
        },
        {
            key: '对已加入版本管理的文件做更改检查',
            value: 'git update-index --no-assume-unchanged <file>'
        },
    ],
    '添加删除移动文件': [
        {
            key: '添加所有文件到暂存区，包括未追踪文件',
            value: 'git add -A / git add .'
        },
        {
            key: '更新暂存区文件',
            value: 'git add -u'
        },
        {
            key: '交互式添加文件到暂存区',
            value: 'git add -p'
        },
        {
            key: '工作区与暂存区删除文件',
            value: 'git rm <file>'
        },
        {
            key: '仅暂存区删除文件',
            value: 'git rm --cached <file>'
        },
        {
            key: '重命名暂存区文件',
            value: 'git mv <file> <file1>'
        },
    ],
    '工作区状态': [
        {
            key: '查看工作区的信息',
            value: 'git status'
        },
        {
            key: '查看工作区信息并显示分支及追踪信息',
            value: 'git status -sb'
        },
        {
            key: '并查看忽略文件的信息',
            value: 'git status --ignored'
        },
        {
            key: '列出忽略文件',
            value: 'git check-ignore *'
        }
    ],
    '显示更改': [
        {
            key: '显示工作区与暂存区的不同',
            value: 'git diff'
        },
        {
            key: '显示暂存区与本地仓库的不同',
            value: 'git diff --cached'
        },
        {
            key: '显示工作区，暂存区与本地仓库的不同',
            value: 'git diff HEAD'
        },
        {
            key: '仅显示改变的文件',
            value: 'git diff --name-only'
        },
        {
            key: '比较两次提交的差异',
            value: 'git diff <commit> <commit>'
        },
        {
            key: '显示某次 commit 所做的更改',
            value: 'git show <commit>'
        },
    ],
    '列出文件信息': [
        {
            key: '列出暂存区文件',
            value: 'git ls-files'
        },
        {
            key: '列出忽略文件与未追踪文件',
            value: 'git ls-files -o'
        },
        {
            key: '子目录中显示所在位置',
            value: 'git ls-files --full-name'
        }
    ],
    '储藏与恢复': [
        {
            key: '储藏(stash)工作区相对暂存区更改的文件',
            value: 'git stash'
        },
        {
            key: '储藏文件并添加描述信息',
            value: 'git stash save <message>'
        },
        {
            key: '恢复最后一次储藏的文件',
            value: 'git stash apply'
        },
        {
            key: '恢复最后一次储藏的文件并删除此次储存记录',
            value: 'git stash pop'
        },
        {
            key: '查看储藏列表',
            value: 'git stash list'
        },
        {
            key: '删除所有储藏列表',
            value: 'git stash clear'
        },
        {
            key: '删除某一个储藏',
            value: 'git stash drop <stash id>'
        }
    ],
    '恢复工作区': [
        {
            key: '重置工作区某文件',
            value: 'git checkout -- <file>'
        },
        {
            key: '重置工作区',
            value: 'git checkout .'
        },
        {
            key: '列出将要清除的未追踪文件',
            value: 'git clean -n'
        },
        {
            key: '清除未追踪文件',
            value: 'git clean -f'
        },
        {
            key: '清除忽略文件',
            value: 'git clean -Xf'
        },
        {
            key: '清除未追踪目录及文件',
            value: 'git clean -df'
        },
    ],
    '版本回退': [
        {
            key: '重置暂存区/取消暂存区所有更改',
            name: 'git reset'
        },
        {
            key: '重置工作区和暂存区',
            value: 'git reset --hard'
        },
        {
            key: '恢复本分支到某次提交，重置工作区与暂存区',
            value: 'git reset --hard <commit-ish>'
        },
        {
            key: '恢复本分支到某次提交',
            value: 'git reset --soft <commit-ish>'
        },
        {
            key: '恢复本分支到某次提交，重置暂存区',
            value: 'git reset --mixed <commit-ish>'
        },
        {
            key: '反向恢复一个提交并生成新的提交',
            value: 'git revert <commit>'
        },
    ],
    '分支': [
        {
            key: '列出本地分支',
            value: 'git branch'
        },
        {
            key: '列出本地分支与追踪关系',
            value: 'git branch -vv'
        },
        {
            key: '列出远程分支',
            value: 'git branch -r'
        },
        {
            key: '列出所有分支',
            value: 'git branch -a'
        },
        {
            key: '建立分支不切换工作区',
            value: 'git branch <branch>'
        },
        {
            key: '删除已被合并的分支',
            value: 'git branch -d <branch>'
        },
        {
            key: '强制删除未被合并的分支',
            value: 'git branch -D <branch>'
        },
        {
            key: '更改分支名字',
            value: 'git branch -m <newbranch>'
        },
        {
            key: '设置追踪分支',
            value: 'git branch -u <upstream>'
        },
        {
            key: '删除某个分支',
            value: 'git branch --delete <branch>'
        }
    ],
    '切换分支': [
        {
            key: '切换分支',
            value: 'git checkout <branch>'
        },
        {
            key: '建立分支并切换工作区',
            value: 'git checkout -b <branch>'
        },
        {
            key: '切换到最近一次分支',
            value: 'git checkout -'
        },
        {
            key: '建立无任何提交历史的分支',
            value: 'git checkout --orphan <branch>'
        },
    ],
    '合并分支': [
        {
            key: '合并 develop 分支到当前分支',
            value: 'git merge develop'
        },
        {
            key: '强制合并分支后生成 merge commit',
            value: 'git merge -no-ff develop'
        },
        {
            key: '合并最近切换分支',
            value: 'git merge -'
        },
        {
            key: '变基合并 develop 分支',
            value: 'git rebase develop'
        },
        {
            key: '变基进入交互式界面',
            value: 'git rebase -i'
        },
    ],
    '远程仓库': [
        {
            key: '添加远程仓库并命名为 origin',
            value: 'git remote add origin <git-repo>'
        },
        {
            key: '修改远程仓库的地址',
            value: 'git remote set-url origin <git-repo>'
        },
        {
            key: '列出所有的远程仓库',
            value: 'git remote -v'
        },
        {
            key: '列出远程仓库 origin 的详细信息',
            value: 'git remote show origin'
        }
    ],
    '推送与拉取': [
        {
            key: '设置默认推送策略为 simple',
            value: 'git config push.default simple'
        },
        {
            key: '推送 master 到远程仓库',
            value: 'git push origin master'
        },
        {
            key: '推送到远程仓库并建立追踪关系',
            value: 'git push -u origin master'
        },
        {
            key: '推送时忽略 pre-push hook',
            value: 'git push -n'
        },
        {
            key: '从远程仓库拉取文件',
            value: 'git pull origin master'
        },
        {
            key: '设置 rebase 模式拉取代码',
            value: 'git pull --rebase origin master'
        },
    ],
    '提交': [
        {
            key: '提交',
            value: 'git commit -m <message>'
        },
        {
            key: '追加提交重置提交信息库',
            value: 'git commit --amend -m <message>'
        },
        {
            key: '重置作者',
            value: 'git commit --amend --author=<mail>'
        },
        {
            key: '允许空提交',
            value: 'git commit --allow-empty'
        },
        {
            key: '提交时跳过 pre-commit hook',
            value: 'git commit -n'
        }
    ],
    '日志': [
        {
            key: '显示提交日志',
            value: 'git log'
        },
        {
            key: '显示某文件的提交日志',
            value: 'git log -p <file>'
        },
        {
            key: '以图表形式显示提交日志',
            value: 'git log --graph --all --oneline --decorate'
        },
        {
            key: '显示每次提交的对象信息',
            value: 'git log --pretty=raw'
        },
        {
            key: '显示某个时间段的提交信息',
            value: "git log --since '2 days ago'"
        },
        {
            key: '显示指定作者的提交信息',
            value: 'git log --author=<author>'
        },
        {
            key: '根据提交信息中的关键字查找',
            value: 'git log --grep=<keyword>'
        },
        {
            key: '根据提交源码中的关键字查找',
            value: 'git log -S <keyword>'
        },
        {
            key: '列出二者特有的提交',
            value: 'git log master...develop'
        },
        {
            key: '列出 branch 有而 branch2 没有的提交',
            value: 'git log branch2..branch'
        },
        {
            key: '仅显示 merge commit',
            value: 'git log --merges'
        },
        {
            key: '统计每个作者的提交情况',
            value: 'git shortlog'
        },
        {
            key: '统计每个作者的提交个数',
            value: 'git shortlog -sn'
        }
    ],
    '标签': [
        {
            key: '列出所有标签并显示标签信息',
            value: 'git tag -ln'
        },
        {
            key: '添加一个标签',
            value: 'git tag -a v1.0.0 -m <message>'
        },
        {
            key: '在某个 commit 上添加一个标签',
            value: 'git tag v0.9.0 <commit>'
        },
        {
            key: '删除一个标签',
            value: 'git tag -d v1.0.0'
        },
        {
            key: '查看某个标签信息',
            value: 'git show v1.0.0'
        },
        {
            key: '推送所有标签到远程仓库',
            value: 'git push --tags'
        },
        {
            key: '使用最近的标签描述本次提交',
            value: 'git describe'
        },
    ],
    '追责（甩锅）': [
        {
            key: '找到最后一次提交的作者',
            value: 'git blame <file>'
        },
        {
            key: '找到具体某一段的最后一次提交',
            value: 'git blame -L 10,18 <file>'
        },
        {
            key: '查找文件的修改历史及明细',
            value: 'git log -p <file>'
        }
    ],
    '确认坏的提交': [
        {
            key: '二分查找坏的提交',
            value: 'git bisect start <br> git checkout HEAD~20 <br> git bisect good <br> git bisect bad <br> git bisect reset'
        }
    ],
    'git 对象': [
        {
            key: '获取改摘要信息的类型',
            value: 'git cat-file -t <hash>'
        },
        {
            key: '获取改摘要信息的内容',
            value: 'git cat-file -p <hash>'
        },
    ],
    '查找': [
        {
            key: '在已追踪文件中查找关键字并指明行号',
            value: 'git grep -n hello'
        }
    ],
    '打包': [
        {
            key: '打包',
            value: 'git archive -o arch.zip HEAD'
        }
    ],
}

